diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/votann/current_list_widget.clj | 20 | ||||
| -rw-r--r-- | src/votann/event_handler.clj | 13 | ||||
| -rw-r--r-- | src/votann/list_widget.clj | 8 | ||||
| -rw-r--r-- | src/votann/point_chart_widget.clj | 2 | ||||
| -rw-r--r-- | src/votann/units_and_points_widget.clj | 40 |
5 files changed, 56 insertions, 27 deletions
diff --git a/src/votann/current_list_widget.clj b/src/votann/current_list_widget.clj index 9f54f0a..b6915df 100644 --- a/src/votann/current_list_widget.clj +++ b/src/votann/current_list_widget.clj @@ -6,6 +6,7 @@ {:fx/type :v-box :padding 5 :children [{:fx/type :label + :style "-fx-font-size: 16px; -fx-font-weight: bold;" :text (:name unit)} {:fx/type :h-box :alignment :center-left @@ -19,6 +20,7 @@ :points (:points unit)}} :text "Remove"} {:fx/type :label + :style "-fx-font-size: 16px;" :text (str (:points unit) "pts")}]}]}))) (defn current-list-label-widget [{:keys [points]}] @@ -30,23 +32,19 @@ :text "Current List"} {:fx/type :h-box :alignment :center - :spacing 50 - :children [{:fx/type :button - :on-mouse-clicked {:event/type :event/restart-click} - :on-key-pressed {:event/type :event/restart-enter} - :text "Restart"} - {:fx/type :label + :spacing 5 + :children [{:fx/type :label :style "-fx-font-size: 18px; -fx-font-weight: bold;" :text (str points " pts")} {:fx/type :button - :on-mouse-clicked {:event/type :event/undo-unit-click} - :on-key-pressed {:event/type :event/undo-unit-enter} - :text "Undo"}]} - ]}) + :on-mouse-clicked {:event/type :event/export-list-click} + :on-key-pressed {:event/type :event/export-list-enter} + :text "Export"}]}]}) (defn current-list-widget [{:keys [units]}] {:fx/type :scroll-pane + :pref-height 860 + :pref-width 300 :content {:fx/type :v-box :alignment :top-center - :pref-height 600 :children (current-list units)}}) diff --git a/src/votann/event_handler.clj b/src/votann/event_handler.clj index 89d9795..6805d53 100644 --- a/src/votann/event_handler.clj +++ b/src/votann/event_handler.clj @@ -28,6 +28,10 @@ (swap! *list-units assoc :points (max 0 (- (:points @*list-units) (:points (:event/target e))))) (swap! *list-units update :units #(vec (concat (subvec % 0 (:index (:event/target e))) (subvec % (inc (:index (:event/target e))))))))) +(defn export-list [_] + (if-not (empty? (get-in @*list-units [:units])) + (spit (str (.toString (java.time.Instant/now)) ".list") @*list-units))) + (defn map-event-handler [e] (cond (= :event/undo-unit-click (:event/type e)) (undo-points e) @@ -51,4 +55,11 @@ (add-unit e) (= :event/add-unit-enter (:event/type e)) - (enter-event add-unit e))) + (enter-event add-unit e) + + (= :event/export-list-click (:event/type e)) + (export-list e) + + (= :event/export-list-enter (:event/type e)) + (enter-event export-list e) + )) diff --git a/src/votann/list_widget.clj b/src/votann/list_widget.clj index efd751e..94cfb85 100644 --- a/src/votann/list_widget.clj +++ b/src/votann/list_widget.clj @@ -6,10 +6,10 @@ (defn left-widget [data] {:fx/type :v-box - :alignment :center - :children [(point-chart-widget data) (current-list-label-widget data) (current-list-widget data)]}) + :alignment :top-center + :children [(current-list-label-widget data) (current-list-widget data)]}) (defn list-view-widget [data] {:fx/type :h-box - :alignment :center - :children [(left-widget data) unit-and-points-widget]}) + :alignment :top-center + :children [(left-widget data) (point-chart-widget data) unit-and-points-widget]}) diff --git a/src/votann/point_chart_widget.clj b/src/votann/point_chart_widget.clj index c4ac331..f2d44fd 100644 --- a/src/votann/point_chart_widget.clj +++ b/src/votann/point_chart_widget.clj @@ -12,6 +12,6 @@ {:fx/type ext-recreate-on-key-changed :key units :desc {:fx/type :pie-chart - :pref-height 600 + :pref-width 623 :title "Point Distribution" :data (chart-data units)}}) diff --git a/src/votann/units_and_points_widget.clj b/src/votann/units_and_points_widget.clj index 48018dd..81846d7 100644 --- a/src/votann/units_and_points_widget.clj +++ b/src/votann/units_and_points_widget.clj @@ -4,15 +4,31 @@ (def units-points-label-widget - {:fx/type :label - :style "-fx-font-size: 18px; -fx-font-weight: bold;" - :text "Units & Points"}) + {:fx/type :v-box + :alignment :center + :children [ + {:fx/type :label + :style "-fx-font-size: 18px; -fx-font-weight: bold;" + :text "Units & Points"} + {:fx/type :h-box + :alignment :center + :spacing 100 + :children [{:fx/type :button + :on-mouse-clicked {:event/type :event/undo-unit-click} + :on-key-pressed {:event/type :event/undo-unit-enter} + :text "Undo"} + {:fx/type :button + :on-mouse-clicked {:event/type :event/restart-click} + :on-key-pressed {:event/type :event/restart-enter} + :text "Restart"}]}]}) + (def unit-points-list-widget (vec (for [unit get-units] {:fx/type :v-box :padding 5 :children [{:fx/type :label + :style "-fx-font-size: 16px; -fx-font-weight: bold;" :text (:name unit)} {:fx/type :h-box :alignment :center-left @@ -26,13 +42,17 @@ :points (:points unit)}} :text "Add"} {:fx/type :label + :style "-fx-font-size: 16px;" :text (str (:points unit) " pts")}]}]}))) (def unit-and-points-widget - {:fx/type :scroll-pane - :fit-to-width true - :min-width 175 - :content - {:fx/type :v-box - :alignment :center - :children (vec (apply merge [units-points-label-widget] unit-points-list-widget))}}) + {:fx/type :v-box + :alignment :top-center + :children [units-points-label-widget + {:fx/type :scroll-pane + :fit-to-width true + :pref-width 300 + :content + {:fx/type :v-box + :alignment :center + :children unit-points-list-widget}}]}) |