# Election Simulator 開發日誌
## 置頂連結
1. [圖像資源](https://drive.google.com/drive/folders/11ljWBIQGt_G14sdIiOJ4slxvnygU9I4X?usp=sharing)
2. [數據庫](https://drive.google.com/drive/folders/1UrPHaC9p-k6l7qTwRePPrpxE-QrdaXcq?usp=sharing) (Last Update: 7/11)
3. [網頁預覽app](https://thunkable.site/w/utGUWTNTA)
## 重大進度
* 當前進度:區塊3之1;小分區5之3(15%)
* 2021.3. 開始進行程式邏輯規劃
* 5.15 邏輯規劃完成,開始繪製UI
* 6.17 使用Thunkable D&D界面進行Test Build 開發
* 6.18 由於D&D有過多無法自定義項目,改為使用Traditional Builder
* 6.20 完成P1前半的第一版,選擇地區部分仍Bug重重
* 6.23 大致完成選擇地區部分,仍有minor bug
* 6.24 生日休兵,修好P1 Summary參選人數的label,紀念一下呵
* 6.25 繪製P2開發所需的地圖(
)
* 6.27 完成P3的filter以及候選人資料的呈現
## 程式結構
### 一級結構
共五部分。
* Home & Setup
* Primary (Setup)
* Primary (Campaign)
* General (Campaign)
* Election Night
### 二級結構
#### Home & Setup
#### 主要作用
供使用者匯入大量預設資料之用,預計將會把資料拆分成幾個不同領域,可分開匯入或逐一調整。
#### 結構
1. Home Page: 判定存檔有無
2. Setup: 可匯入/批次調整大量資料與參數
#### Primary (Setup)
##### 主要作用
供使用者設定本次選舉模擬的主要參數
##### 結構
1. Primary 1: 選擇PAC立場、命名以及欲控制地區
2. Primary 2: 設定各地理區的參數
3. Primary 3: 設定個別候選人的特性,承接Primary 1,選擇要控制的對象
4. Primary 4: 設定日常活動/民調等等效用的相關參數
5. Primary 5: 設定其他有關此次選舉的參數
## 開發紀錄
### 21.07.23
#### 最近進度
1. Poll 機制:Ability per capita/ Information Level/ MOE/ Frequency/ House Effect Type (+8格)
2. News 機制: 有Generic Influence和Specific Focus
3. Office 機制: 最小單位為State,有Efficiency, Initial Dev., Growth Dev., Spend/Invest Tendency
* 註:由於Office太多項目,因此將以","list型式儲存,第一位為National,2開始為state
### 21.07.22
#### 最近進度
1. 調整了部分美觀上的東西,並重新設計P1介面
2. 開始製作P4
#### 等待處理
1. Edit SEN/ PRES Incumbent (P2)
2. Add Remove Candidate (P2)
3. CD 也需要有sen approval, State也需要有pres approval (P2)
4. 候選人特質還缺很多項 (P3)
5. P1-RE要有選區簡介
6. PVI還算不出來 (P2)
### 21.07.19
#### 最近進度
1. 開發屬於P2的Incumbency Tag,分為Up seat跟Sub seat (Senate),系統使用ID溝通,-1代表Open Seat,-2為不適用(如DC)。資料庫沒有的人則直接打名字。Approval Rating以地區資料庫為準則
2. 後臺穩定與代碼節約已經完工
#### 未來進度
1. Edit State/ National Incumbent 功能還沒做; 怎麼Edit?
2. Add/ Remove Candidate還沒做
3. Choose Candidate/ Remove Candidate 還沒做
### 21.07.16
#### 最近進度
1. P2中,完成編輯頁面建置,資料連動,包含IDEOLOGY都已經做完
2. P2的存檔可以一次處理50州,唯每次存檔要花費75秒,但使用者欲看單州獲全國資訊時,可以即時**RT**刷新
3. 在P1S,P2,P3各資料庫與變數交流,需時為肉眼可見之處都加上了Loading Icon
4. 研究P3中的INCUMBENCY,目前開發出四位數代號,以下舉例:
| Name | 代號 | 說明1 | 說明2 | 說明3 | 說明4 |
| -------------- | -------- | ---------------- | ------------ | ---------- | ---------- |
| Jeff Sessions | S,N,X,X | 在本選區現任 | 任期尚未結束 | *(不適用)* | *(不適用)* |
| Susan Collins | S,U,X,X | 在本選區現任 | 任期到期 | *(不適用)* | *(不適用)* |
| Martha Mcsally | D,X,AZ,1 | 在其他選區為現任 | *(不適用)* | AZ | 1 |
| Joe Biden | N,X,X,X | 沒有任何現任 | *(不適用)* | *(不適用)* | *(不適用)* |
#### 未來進度
1. (擱置中)P2與P3的Bulk Settings
2. Add Candidate, Remove Candidate
3. Incumbent 做完
4. 利用Procedure with value再簡化程式碼,搬移變數
5. P3E加入INCUMBENCY, P2做完
### 21.07.14
#### 待解決problem
1. 存檔時間過久(p2)--> 改成FILTER當下進行計算,按下存檔繼續時算NATIONAL
2. Ideology/ Party Approval 沒法套用計算
3. incumbent 還沒弄
4. Bulk action/ 直接輸入數字
### 21.07.11
#### 下次預計進度
1. 加入incumbency & PVI計算
2. 編輯State/National時,連動State/CD
3. 簡化變數
4. P3須能編輯支持度;P2得有各種族數據
### 21.07.01
#### 進度
1. 加入檢測該選區是否需要選擇候選人的機制 (即為06.30的第4項預計進度)
2. 候選人資料區現在可以檢測到ideology了
#### 下次預計進度
1. 把P3E做完
2. 資料庫數據計算
### 21.06.30
#### 進度
1. 延後其他進度; 資料結構整理與程式結構分析
2. 優化screen start behaviour
3. 解決
>*BUG* 在Primary 1中如果完全沒有編輯任何東西,summary的數據會出錯,使用表格預設值
4. 完成檢核機制
5. 部分資料(name, focus, i-b)現在已完成重啟時清除
#### 非線性待處理事項
1. *正設* 研究Incumbency製作方法
2. *正設* 加入新candidate & edit non-controlling candidate
3. *bug* 當輸入不完整的filter時,總是出現spike cohan (應可disable search label)
#### 下次預計進度
1. 非2
2. 把P3的ideology跟candidate ideology連線進資料庫
3. 規劃P2作法
4. P1不用的選區,P3不能出現
### 21.06.29
#### 進度
1. 將Issue datalist中計算ideology方式的表格做出來
2. 完成ideology-問題之間的公式(ax^2+bx)
3. 刪除Primary 1 Summary中的canva,改成文字形式,並用5個小時終於成功讓R+1,Liberal+2上線 (Demographic summary也做好了)
#### 非線性待處理事項
1. *正設* 各CD的ideology只需要一個Stance,係數是全國統一的
2. *正設* 州及全國的ideology數據是CD權數的加總
3. *BUG* 在Primary 1中如果完全沒有編輯任何東西,summary的數據會出錯,使用表格預設值
4. *正設* 研究Incumbency製作方法
5. *正設* 加入新candidate & edit non-controlling candidate
#### 下次預計進度
1. 把非4做出來
2. 把P3的ideology跟candidate ideology連線進資料庫
3. 規劃P2作法
4. 完成檢核機制(P1,P3)
5. 加入Clear all data (存檔)
6. ~~把P1的datalist改成P3~~
7. *正設* P1不用的選區,P3不能出現
8. *bug* 當輸入不完整的filter時,總是出現spike cohan (應可disable search label)
### 21.06.28
#### 進度
1. 修復Primary 1 所有bug並將程式碼大幅簡化
2. Primary 3 Candidate Information大致建構完成,加入edit button
#### 非線性待處理事項
1. *正設* 研究ideology 和incumbency的數據處理方式
2. *正設* P1不用的選區,P3不能出現
3. *bug* 當輸入不完整的filter時,總是出現spike cohan (應可disable search label)
#### 下次預計進度
1. 完成非1+2
2. 思考Primary 2 的製作方法
3. 完成P-3-E的骨幹與規劃
### 21.06.27
#### 進度
1. 完成Primary 3 介面中,Filter後會出現對應選區的所有參選人
2. 建置開發日誌、所有local db備份到雲端
3. 所有已命名變數重新系統性命名,分為三類:
a. data_(與資料庫直接連接者)
b. igv_(作為短期變數儲存,需定期與data_交換)
c. app_(專供程式執行時使用之變數)
4. 確立所有介面皆採用relative height,若遇需部分scrollable則為column: fit content; item: absoloute height
#### 非線性待處理事項
1. *優化* Primary 1 程式碼通用化
2. *正設* P1不用的選區,P3不能出現
3. *BUG* 當前於Primary 1介面,單一州None按鈕有機會失靈,推測與cache有關,且並非**文字後顯示大法**可解決
4. *BUG* P3如果filter結果為空,會有個按鈕跑出來
#### 下次預計進度
1. 完成P3顯示候選人資料部分
2. 解決非1、3